package Day15.poly_.three;

/**
 * 多态的注意事项接细节讨论
 * 多态的前提是 ：两个对象（类）存在继承关系
 *
 *
 * 多态的向上转型
 * 1.本质：父类的引用指向了子类的对象
 * 2.语法：父类类型  引用名 =new 子类类型()；
 * 3.特点：编译类型看左边，运行类型看右边
 * 可以调用父类中的所有成员(需遵守访问权限)
 * 不能调用子类中的特有成员,因为在编译阶段，能调用哪些成员，是由编译类型来决定的
 * 最终的运行结果看子类(运行类型)的具体实现,调用方法时，按照从子类（运行类型）开始查找方法
 *
 * 多态的向下转型
 * 1.语法：子类类型  引用名 =（子类类型）父类引用；
 * 2.只能强转父类的引用，不能强转父类的对象
 * 3.要求父类的引用必须指向的是当前目标类型的对象
 * 4.当向下转型后，可以调用子类类型中的所有成员
 */
public class Animal {
    String name="动物";
    int age=10;

    public void sleep(){
        System.out.println("睡");
    }

    public void run(){
        System.out.println("跑");
    }

    public void eat(){
        System.out.println("吃");
    }

    public void show(){
        System.out.println("hello 你好");
    }
}
